/*
    定义日志消息类：进行日志中间信息的存储：
    1.日志的输出时间   用于过滤日志输出时间
    2.日志等级         进行日志过滤分析
    3.源文件名称       
    4.源代码行号       用于定位出现错误的代码位置
    5.线程ID
    6.日志主体消息
    7.日志器名称       当前支持多日志器的同时使用
*/
#ifndef __M_MSG_H__
#define __M_MSG_H__

#include<iostream>
#include<string>
#include<thread>     //日志的时间戳
#include"level.hpp"
#include"util.hpp"

namespace bitlog{
    struct LogMsg{        //定义一个结构体，可以直接访问，默认公有
        time_t _ctime;//日志产生的时间戳
        LogLevel::value _level;//日志等级
        size_t _line;          //行号
        std::string _file;    //源文件名称
        std::thread::id _tid;  //线程id
        std::string _logger;   //日志器名称
        std::string _payload;  //日志主体消息
        
        LogMsg(LogLevel::value level,           //构造函数，进行消息的构造
            size_t line,
            const std::string file,
            const std::string logger,
            const std::string msg):
            _ctime(util::Date::now()),             //初始化
            _level(level),
            _line(line),
            _tid(std::this_thread::get_id()),
            _file(file),
            _logger(logger),
            _payload(msg){}
    };
}

#endif 